
import { reqgoodscount, reqgoodslist } from "../../http/api"

// 状态
let state = {
    // 初始化列表
    list: [],
    page: 1,//当前页
    size: 3,//一页的数量
    total: 0,//总数
}
// 导出
let getters = {
    // 导出列表
    list(state) {
        return state.list
    },
    page(state) {
        return state.page
    },
    size(state) {
        return state.size
    },
    total(state) {
        return state.total
    }

}

// 修改
let mutations = {
    changelist(state, list) {
        state.list = list
    },
    changepage(state, page) {
        state.page = page
    },
    changesize(state, size) {
        state.size = size
    },
    changetotal(state, total) {
        state.total = total
    }
}

// 逻辑
let actions = {
    reqList({ dispatch }) {
        // 由于之后还要做分页，发请求，所以单独卸载外面，然后发调用
        //发情商品列表请求
        dispatch('reqGoodsList')
        // 请求总数
        dispatch('reqTotal')
    },
    // 请求商品列表
    reqGoodsList({commit, dispatch , state:{size, page}}) {
        reqgoodslist({
            page,
            size

        }).then(res => {
            if (res.data.code == 200) {
                
                let arr = res.data.list ? res.data.list : []
                // 如果取到了空数组，当前页码不是第1页，需要取上一页的数据
                if(arr.length == 0 && page!=1){
                    // 通知mutations修改page
                    commit('changepage',page-1)
                    //请求列表
                    dispatch('reqGoodsList')
                    return
                }
                commit('changelist', arr)
            }
        })
    },
    // 请求总数
    reqTotal({commit}) {
        //发请求
        reqgoodscount().then(res=>{
            if(res.data.code == 200){
                // 修改了总数
                commit('changetotal',res.data.list[0].total)
            }
        }) 
    },
    // 点击修改了页码
    changePage({ commit,dispatch},page){
        // 修改page
        commit('changepage',page);
        // 请列表
        dispatch('reqGoodsList')
    }
}

export default {
    state,
    getters,
    mutations,
    actions,
    // 命明空间
    namespaced: true
}
// import {
//     reqspecslist,
//     reqspecscount,
//     reqgoodslist,
//     reqgoodscount
// } from "../../http/api"

// /*分页
//     1.绘制分页组件
//     2.初始化数据 state getters mutations
//     3.进来页面，要 请列表+请总数

// */
// /*
// state:数据
// getters：导出数据
// mutations:直接修改state 同步 commit
// actions:逻辑、异步，  异步   dispatch ,不可以直接修改state
// */
// let state = {
//     //3.1列表数据
//     list: [],
//     //分页的总数
//     total: 0,
//     //一页的数量
//     size: 2,
//     //当前页
//     page: 1
// }

// let getters = {
//     //3.2导出list
//     list(state) {
//         return state.list
//     },
//     //导出总数
//     total(state) {
//         return state.total
//     },
//     //导出一页的数量
//     size(state) {
//         return state.size
//     },

// }

// let mutations = {
//     //3.3修改list
//     changeList(state, list) {
//         state.list = list;
//     },
//     //3.3修改total
//     changetotal(state, total) {
//         state.total = total;
//     },
//     //3.3修改size
//     changesize(state, size) {
//         state.size = size;
//     },
//     //3.3修改page
//     changepage(state, page) {
//         state.page = page;
//     },

// }

// let actions = {
//     //3.4 list逻辑
//     reqList({
//         dispatch
//     }) {
//         //请求列表
//         dispatch("reqGoodsList")
//         //请求总数
//         dispatch("reqTotal")

//     },
//     //请求列表
//     reqGoodsList({
//         commit,
//         dispatch,
//         state: {
//             size,
//             page
//         }
//     }) {

//         reqgoodslist({page,size}).then(res => {
//             if (res.data.code == 200) {

//                 // 如果取到了空数组，当前页码不是第1页，需要取上一页的数据
//                 let arr = res.data.list ? res.data.list : []
//                 if (arr.length == 0 && page != 1) {
//                     //通知mutations修改page 
//                     commit("changepage", page - 1)
//                     //请求列表
//                     dispatch("reqGoodsList")
//                     return
//                 }


//                 //修改list
//                 commit("changeList", arr)
//             }
//         })

//     },
//     //请求总数
//     reqTotal({
//         commit
//     }) {
//         reqgoodscount().then(res => {
//             if (res.data.code == 200) {
//                 //修改总数
//                 commit("changetotal", res.data.list[0].total)
//             }
//         })
//     },
//     //修改了页码
//     changePage({
//         commit,
//         dispatch
//     }, page) {
//         // 修改page
//         commit("changepage", page)
//         // 请列表
//         dispatch("reqGoodsList")
//     }

// }

// export default {
//     state,
//     getters,
//     mutations,
//     actions,
//     //命名空间
//     namespaced: true
// }